package cn.aishua.ui.setting;

import java.io.File;

import org.apache.http.HttpResponse;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import cn.aishua.R;
import cn.aishua.network.HttpRequestUtil;
import cn.aishua.network.UpdateAppAsyncTask;
import cn.aishua.ui.MainActivityGroup;
import cn.aishua.ui.myKaka.task.DataExchangeAsyncTask;
import cn.aishua.util.SharedPrefConst;

public class SettingActivity
    extends Activity
{
    private SharedPreferences sharedPref;

    public ProgressDialog downloadDialog;

    String mSavePath;
    String mFileName;

    private TextView tvVersion;

    //    private static final int DOWNLOAD = 1;
    //    private static final int DOWNLOAD_FINISH = 2;
    //    public int progress;
    //    private boolean cancelUpdate = false;

    //    String url;

    Button btnQuit;

    // page header widgets
    private ImageView ivLeftBtn;
    private ImageView ivRightBtn;
    private TextView tvTitile;

    private void initPageHeader()
    {
        // left button
        ivLeftBtn = (ImageView) findViewById( R.id.page_header_iv_left_btn );
        ivLeftBtn.setImageResource( R.drawable.btn_back );
        ivLeftBtn.setOnClickListener( new View.OnClickListener()
        {

            @Override
            public void onClick( View v )
            {
                back( v );
            }
        } );

        // title
        tvTitile = (TextView) findViewById( R.id.page_header_tv_title );
        tvTitile.setText( "设置" );

        // right button
        ivRightBtn = (ImageView) findViewById( R.id.page_header_iv_right_btn );
        ivRightBtn.setVisibility( View.GONE );
    }

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.my_kaka_setting );
        initPageHeader();
        initiate();
    }

    private void initiate()
    {
        tvVersion = (TextView) findViewById( R.id.setting_tv_version );
        try
        {
            tvVersion.setText( "版本 " + getPackageManager().getPackageInfo( getPackageName(), 0 ).versionName );
        }
        catch( NameNotFoundException e )
        {
            Log.d( "SplashActivity", e.getMessage() );
        }

        sharedPref = getSharedPreferences( "userInfo", Context.MODE_PRIVATE );
        btnQuit = (Button) findViewById( R.id.my_kaka_setting_btn_quit );

        if( !sharedPref.getBoolean( SharedPrefConst.SHARED_PREF_BOOL_USER_IS_LOGIN, false ) )
        {
            btnQuit.setVisibility( View.GONE );
        }
    }

    public void back( View view )
    {
        onBackPressed();
    }

    public void logout( View view )
    {
        new DataExchangeAsyncTask( this, "退出登录" )
        {

            @Override
            protected HttpResponse sendRequest( String... params )
            {
                HttpResponse res = HttpRequestUtil.getInstance().logout();
                return res;
            }

            @Override
            protected void handleSuccResponse( String strJson ) throws Exception
            {
                Editor editor = sharedPref.edit();
                editor.putBoolean( SharedPrefConst.SHARED_PREF_BOOL_USER_IS_LOGIN, false );
                editor.remove( SharedPrefConst.SHARED_PREF_STR_SESSION_ID );
                editor.putBoolean( SharedPrefConst.SHARED_PREF_BOOL_AUTO_IS_NOT_NEEDED, true );
                editor.putBoolean( SharedPrefConst.SHARED_PREF_BOOL_AUTO_IS_CHECKED, false );
                editor.commit();

                Intent intent = new Intent( SettingActivity.this, MainActivityGroup.class );
                intent.putExtra( MainActivityGroup.TAB, MainActivityGroup.TAG_USER_INFO );
                startActivity( intent );
                finish();
            }
        }.execute();
    }

    public void update( View view )
    {
        new UpdateAppAsyncTask( this, null ).execute();

        //        try
        //        {
        //            final int currVersionCode = getCurrentVersion();
        //            new DataExchangeAsyncTask( this, null )
        //            {
        //
        //                @Override
        //                protected HttpResponse sendRequest( String... params )
        //                {
        //                    return HttpRequestUtil.getInstance().getApkVersion();
        //                }
        //
        //                @Override
        //                protected void handleSuccResponse( String strJson ) throws Exception
        //                {
        //                    // TODO this is only used to remove the extra [] which should be the error in json response
        //                    StringBuffer sb = new StringBuffer( strJson );
        //                    sb.deleteCharAt( 0 ).deleteCharAt( sb.length() - 1 );
        //
        //                    JSONObject jsonObj = new JSONObject( sb.toString() );
        //                    String versionName = jsonObj.getString( "version" );
        //                    int versionCode = jsonObj.getInt( "verCode" );
        //                    url = jsonObj.getString( "url" );
        //
        //                    if( currVersionCode < versionCode ) // has new version
        //                    {
        //                        extractFileName();
        //                        if( mFileName != null )
        //                        {
        //                            showNoticeDialog( versionName );
        //                        }
        //                        else
        //                        {
        //                            Toast.makeText( getApplicationContext(), "服务器异常", Toast.LENGTH_SHORT ).show();
        //                        }
        //                    }
        //                    else
        //                    {
        //                        Toast.makeText( getApplicationContext(), "当前已是最新版本", Toast.LENGTH_SHORT ).show();
        //                    }
        //                }
        //
        //                private void extractFileName()
        //                {
        //                    if( url != null )
        //                    {
        //                        String[] array = url.split( "/" );
        //                        if( array != null && array.length > 0 )
        //                        {
        //                            mFileName = array[array.length - 1]; // file name is the last sub string of url
        //                        }
        //                    }
        //                }
        //            }.execute();
        //        }
        //        catch( NameNotFoundException e )
        //        {
        //            Log.e( "SettinActivity", e.getMessage() );
        //            Toast.makeText( this, "获取当前版本失败", Toast.LENGTH_SHORT ).show();
        //            return;
        //        }

    }

    //    private int getCurrentVersion() throws NameNotFoundException
    //    {
    //        PackageManager packageManager = getPackageManager();
    //        PackageInfo packInfo = packageManager.getPackageInfo( getPackageName(), 0 );
    //        Log.d( "SettingActivity", "version name: " + packInfo.versionName );
    //        Log.d( "SettingActivity", "version code: " + packInfo.versionCode );
    //        return packInfo.versionCode;
    //    }

    public void setPic( View view )
    {
        Intent intent = new Intent( this, PictureSettingActivity.class );
        startActivity( intent );
    }

    public void toHelpPage( View view )
    {
        Intent intent = new Intent( this, HelpActivity.class );
        startActivity( intent );
    }

    public void toAboutUsPage( View view )
    {
        Intent intent = new Intent( this, AboutUsActivity.class );
        startActivity( intent );
    }

    public void cleanCache( View view )
    {
        File[] files = getCacheDir().listFiles();
        for( File f : files )
        {
            deleteAllFiles( f );
        }
        Toast.makeText( this, "已清除缓存", Toast.LENGTH_SHORT ).show();
    }

    private void deleteAllFiles( File f )
    {
        if( f.exists() )
        {
            File[] files = f.listFiles();
            if( files != null )
            {
                for( File file : files )
                    if( file.isDirectory() )
                    {
                        deleteAllFiles( file );
                    }
                    else if( file.isFile() )
                    {
                        file.delete();
                    }
            }
            f.delete(); //delete the root folder
        }
    }

    //    private void showNoticeDialog( String versionName )
    //    {
    //        // build dialog
    //        AlertDialog.Builder builder = new Builder( this );
    //        builder.setTitle( "软件更新" );
    //        builder.setMessage( "检测到新版本" + versionName + ", 立即更新吗" );
    //        // button of update
    //        builder.setPositiveButton( "更新", new OnClickListener()
    //        {
    //            public void onClick( DialogInterface dialog, int which )
    //            {
    //                dialog.dismiss();
    //                // 显示下载对话框
    //                showDownloadDialog();
    //            }
    //        } );
    //        // button of cancellation
    //        builder.setNegativeButton( "稍后更新", new OnClickListener()
    //        {
    //            public void onClick( DialogInterface dialog, int which )
    //            {
    //                dialog.dismiss();
    //            }
    //        } );
    //        Dialog noticeDialog = builder.create();
    //        noticeDialog.show();
    //    }

    //    /**
    //     * display dialog of downloading
    //     */
    //    private void showDownloadDialog()
    //    {
    //        showDialog( 1 );
    //        // 现在文件 
    //        downloadApk();
    //    }

    //    @Override
    //    protected Dialog onCreateDialog( int id )
    //    {
    //        switch( id )
    //        {
    //
    //            case 1:
    //                downloadDialog = new ProgressDialog( this );
    //                downloadDialog.setTitle( "软件更新" ); 
    //                downloadDialog.setMessage( "正在下载..." ); 
    //                downloadDialog.setMax( 100 ); 
    //                downloadDialog.setProgressStyle( ProgressDialog.STYLE_HORIZONTAL ); 
    //                downloadDialog.setButton( "取消下载", new OnClickListener()
    //                {
    //
    //                    public void onClick( DialogInterface dialog, int which )
    //                    {
    //                        downloadDialog.dismiss();
    //                        cancelUpdate = true;
    //                    }
    //                } );
    //                return downloadDialog;
    //        }
    //
    //        return super.onCreateDialog( id );
    //    }

    //    /**
    //     * download apk file
    //     */
    //    private void downloadApk()
    //    {
    //        // new thread of downloading
    //        new downloadApkThread().start();
    //    }

    //    /**
    //     * 下载文件线程
    //     */
    //    private class downloadApkThread
    //        extends Thread
    //    {
    //        @Override
    //        public void run()
    //        {
    //            try
    //            {
    //                // 判断SD卡是否存在，并且是否具有读写权限 
    //                if( Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED ) )
    //                {
    //                    // 获得存储卡的路径 
    //                    String sdpath = Environment.getExternalStorageDirectory() + "/";
    //                    mSavePath = sdpath + "download";
    //                    URL url = new URL( HttpRequestUtil.URL_HOST + SettingActivity.this.url );
    //                    // 创建连接 
    //                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    //                    conn.connect();
    //                    // 获取文件大小 
    //                    int length = conn.getContentLength();
    //                    // 创建输入流 
    //                    InputStream is = conn.getInputStream();
    //
    //                    File file = new File( mSavePath );
    //                    // 判断文件目录是否存在 
    //                    if( !file.exists() )
    //                    {
    //                        file.mkdir();
    //                    }
    //                    File apkFile = new File( mSavePath, mFileName );
    //                    FileOutputStream fos = new FileOutputStream( apkFile );
    //                    int count = 0;
    //                    // 缓存 
    //                    byte buf[] = new byte[1024];
    //                    // 写入到文件中 
    //                    do
    //                    {
    //                        int numread = is.read( buf );
    //                        count += numread;
    //                        // 计算进度条位置
    //                        progress = (int) ( ( (float) count / length ) * 100 );
    //                        // 更新进度
    //                        mHandler.sendEmptyMessage( DOWNLOAD );
    //                        if( numread <= 0 )
    //                        {
    //                            // 下载完成
    //                            mHandler.sendEmptyMessage( DOWNLOAD_FINISH );
    //                            break;
    //                        }
    //                        // 写入文件
    //                        fos.write( buf, 0, numread );
    //                    }
    //                    while( !cancelUpdate );// 点击取消就停止下载.
    //                    cancelUpdate = false;// revert after cancellation
    //                    fos.close();
    //                    is.close();
    //                }
    //            }
    //            catch( MalformedURLException e )
    //            {
    //                e.printStackTrace();
    //            }
    //            catch( IOException e )
    //            {
    //                e.printStackTrace();
    //            }
    //            // 取消下载对话框显示 
    //            downloadDialog.dismiss();
    //        }
    //    };

    //    /**
    //     * 安装APK文件
    //     */
    //    public void installApk()
    //    {
    //        File apkfile = new File( mSavePath, mFileName );
    //        if( !apkfile.exists() )
    //        {
    //            return;
    //        }
    //        // 通过Intent安装APK文件 
    //        Intent i = new Intent( Intent.ACTION_VIEW );
    //        i.setDataAndType( Uri.parse( "file://" + apkfile.toString() ), "application/vnd.android.package-archive" );
    //        startActivity( i );
    //    }

    //    public Handler mHandler = new Handler()
    //    {
    //        public void handleMessage( Message msg )
    //        {
    //            switch( msg.what )
    //            {
    //                // 正在下载
    //                case UpdateAppAsyncTask.DOWNLOAD:
    //                    // 设置进度条位置
    //                    downloadDialog.setProgress( progress );
    //                    break;
    //                case UpdateAppAsyncTask.DOWNLOAD_FINISH:
    //                    // 安装文件
    //                    installApk();
    //                    break;
    //                default:
    //                    break;
    //            }
    //        };
    //    };
}
